package com.woniuxy.pxxt.service;

import com.woniuxy.pxxt.common.result.Result;
import com.woniuxy.pxxt.common.vo.FindTrainUserScheduleVo;
import com.woniuxy.pxxt.common.vo.train.TrainMsgVo;
import com.woniuxy.pxxt.dto.UserScoreDto;
import com.woniuxy.pxxt.entity.Train;

/**
 * <P> @Author: ideaAdmin
 * <P> TODO: Interface
 * <P> TODO:处理培训项目的service
 * <P> Date: 2022/3/7:16:11
 * <P> Description:
 */

public interface TrainService {
    /**
     * <P> @MethodName: createTrain
     * <P> @TODO 培训项目查看
     * <P> @param train:
     * <P> @return: com.woniuxy.pxxt.common.result.Result
     * <P> @Date 2022/3/7 19:03
     **/
    Result findTrain(Integer currentPage, Integer pageSize, Train train);

    /**
     * <P> @MethodName: createTrain
     * <P> @TODO 创建培训项目
     * <P> @param null:
     * <P> @return: null
     * <P> @Date 2022/3/7 19:53
     **/
    Result createTrain(String trainImgName,String trainImgUrl, Train train);

    /**
     * <P>Author ideaAdmin
     * <P>TODO:获得前端的用户id和培训id 为当前用户新增到课程中
     * <P>Date 19:12 2022/3/7
     * <P>* @param userId 用户id
     * <P>* @param trainId   培训id
     * <P>* @return com.woniuxy.pxxt.common.result.Result
     **/
    Result addUserToTrain(Integer userId, Integer trainId);


    Result delTrainById(Integer id);

    /**
     * <P>Author ideaAdmin
     * <P>TODO:通过培训的id 查询下面所有的培训人员 进行分页
     * <P>Date 20:13 2022/3/7
     * <P>* @param trainId   培训id
     * <P>* @return com.woniuxy.pxxt.common.result.Result
     **/
    Result findTrainUser(Integer trainId, Integer currentPage, Integer pageSize);

    /**
     * <P>Author ideaAdmin
     * <P>TODO:通过培训的id 查询学员的进度
     * <P>Date 12:12 2022/3/8
     * <P>* @param trainId
     * <P>* @return com.woniuxy.pxxt.common.result.Result
     **/

    Result findTrainUserSchedule(Integer currentPage, Integer pageSize, FindTrainUserScheduleVo findTrainUserScheduleVo);

    /**
     * <P>Author ideaAdmin
     * <P>TODO:通过培训的id 查询学员的学习成绩分数
     * <P>Date 19:18 2022/3/8
     * <P>* @param currentPage
     *
     * @param pageSize
     * @param findTrainUserScheduleVo <P>* @return com.woniuxy.pxxt.common.result.Result
     **/
    Result findTrainUserScore(Integer currentPage, Integer pageSize, FindTrainUserScheduleVo findTrainUserScheduleVo);

    /**
     * <P>Author ideaAdmin
     * <P>TODO: 通过用户培训的ids  设置该学员的培训状态
     * <P>Date 20:14 2022/3/8
     * <P>* @param userScoreDto  list对象的封装 封装着这个用户培训表的ids
     * <P>* @return com.woniuxy.pxxt.common.result.Result
     *
     * @param status 需要更改的状态
     **/
    Result setUserStatus(UserScoreDto userScoreDto, Integer status);

    /**
     * <P>Author ideaAdmin
     * <P>TODO:通过培训id获取培训项目的所有信息
     * <P>Date 11:45 2022/3/9
     * <P>* @param id    培训id
     * <P>* @return com.woniuxy.pxxt.common.result.Result
     **/
    Result findTrainById(Integer id);

    /**
     *<P> @MethodName: findTrainByIdEdit
     *<P> @TODO 通过培训id获取培训项目的所有信息（编辑用）
     *<P> @param id:
     *<P> @return: com.woniuxy.pxxt.common.result.Result
     *<P> @Date 2022/3/10 19:33
    **/
    Result findTrainByIdEdit(Integer id);

    /**
     *<P> @MethodName: updateTrain
     *<P> @更新方法
     *<P> @param trainImgName: 图片的名字
     *<P> @param trainImgUrl:  图片的url
     *<P> @param train:
     *<P> @return: com.woniuxy.pxxt.common.result.Result
     *<P> @Date 2022/3/10 20:17
    **/
    Result updateTrain(String trainImgName, String trainImgUrl, Train train);

    /**
     * <P>Author ideaAdmin
     * <P>TODO: 查询所有培训信息
     * <P>Date 15:03 2022/3/11
     * <P>* @param trainMsgVo
     * <P>* @return com.woniuxy.pxxt.common.result.Result
     **/
    Result findAllTrain(TrainMsgVo trainMsgVo);
}
